home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1990-01-01 | 2.7 KB | 84 lines |
- Syntax10.Scn.Fnt
- MODULE InOut; (* J. Templ, 18.6.91/27.10.91 *)
- IMPORT
- Texts, Oberon, Viewers, MenuViewers, TextFrames, Fonts, Display;
- Done*: BOOLEAN;
- W: Texts.Writer;
- T: Texts.Text;
- S: Texts.Scanner;
- B: Texts.Text;
- pos: LONGINT;
- PROCEDURE OpenInput*;
- VAR F: Display.Frame; beg, end, time: LONGINT;
- BEGIN
- pos := Oberon.Par.pos; B := Oberon.Par.text;
- Texts.OpenScanner(S, B, pos); Texts.Scan(S); (* one token look ahead *)
- IF S.class = Texts.Char THEN
- IF S.c = "^" THEN Oberon.GetSelection(B, beg, end, time);
- IF time >= 0 THEN Texts.OpenScanner(S, B, beg); pos := beg; Texts.Scan(S) ELSE B := Oberon.Par.text END
- ELSIF S.c = "*" THEN F := Oberon.MarkedViewer();
- IF F IS MenuViewers.Viewer THEN F := F.dsc.next;
- WITH F: TextFrames.Frame DO B := F.text;
- Texts.OpenScanner(S, B, 0); pos := 0; Texts.Scan(S)
- ELSE
- END
- END
- END
- END
- END OpenInput;
- PROCEDURE OpenOutput*;
- VAR V: MenuViewers.Viewer; X, Y: INTEGER;
- BEGIN
- T := TextFrames.Text("");
- Oberon.AllocateUserViewer(0, X, Y);
- V := MenuViewers.New(
- TextFrames.NewMenu("InOut.Text", "System.Close System.Copy System.Grow Edit.Search Edit.Store"),
- TextFrames.NewText(T, 0),
- TextFrames.menuH,
- X, Y)
- END OpenOutput;
- PROCEDURE Read*(VAR ch: CHAR);
- BEGIN
- Texts.OpenReader(S, B, pos); Texts.Read(S, ch); Done := ~S.eot;
- INC(pos); Texts.OpenScanner(S, B, pos); Texts.Scan(S)
- END Read;
- PROCEDURE ReadInt*(VAR i: LONGINT);
- BEGIN
- IF S.class = Texts.Int THEN Done := TRUE; i := S.i; pos := Texts.Pos(S)-1; Texts.Scan(S)
- ELSE Done := FALSE
- END
- END ReadInt;
- PROCEDURE ReadReal*(VAR x: LONGREAL);
- BEGIN
- IF S.class = Texts.Real THEN Done := TRUE; x := S.y; pos := Texts.Pos(S)-1; Texts.Scan(S)
- ELSE Done := FALSE
- END
- END ReadReal;
- PROCEDURE ReadString*(VAR s: ARRAY OF CHAR);
- BEGIN
- IF S.class = Texts.Name THEN Done := TRUE; COPY(S.s, s); pos := Texts.Pos(S)-1; Texts.Scan(S)
- ELSE Done := FALSE
- END
- END ReadString;
- PROCEDURE Write*(ch: CHAR);
- BEGIN Texts.Write(W, ch); Texts.Append(T, W.buf)
- END Write;
- PROCEDURE WriteInt*(i: LONGINT);
- BEGIN Texts.Write(W, " "); Texts.WriteInt(W, i, 1); Texts.Append(T, W.buf)
- END WriteInt;
- PROCEDURE WriteReal*( x: LONGREAL; n: INTEGER);
- BEGIN Texts.WriteLongReal(W, x, n); Texts.Append(T, W.buf)
- END WriteReal;
- PROCEDURE WriteString*(s: ARRAY OF CHAR);
- BEGIN Texts.WriteString(W, s); Texts.Append(T, W.buf)
- END WriteString;
- PROCEDURE WriteLn*;
- BEGIN Texts.WriteLn(W); Texts.Append(T, W.buf)
- END WriteLn;
- PROCEDURE SetFont*(name: ARRAY 32 OF CHAR);
- BEGIN
- Texts.SetFont(W, Fonts.This(name))
- END SetFont;
- BEGIN Texts.OpenWriter(W); T := Oberon.Log
- END InOut.
-